#pragma once
class GraphicsDeviceContext;

typedef std::shared_ptr<GraphicsDeviceContext> GraphicsDeviceContextPtr;

class GraphicsDeviceContext
{
public:
    GraphicsDeviceContext();
    virtual ~GraphicsDeviceContext();
public:
    d2d::Device&        GetD2DDevice();
    d2d::DeviceContext& GetD2DDeviceContext();
    d3d::Device&        GetD3DDevice();
public:
    void SetDPI(float dpiX, float dpiY);
private:
    d3d::Device         m_d3dDevice;
    d2d::Device         m_d2dDevice;
    d2d::DeviceContext  m_d2dDeviceContext;
    d2d::Factory1       m_d2dFactory;
};

